# order包含的变量
# write by hashaki
# last fix by hashaki on 2018/11/02
# 2018/11/02  添加了class ResultClass
class orderClass:
    def __init__(self):
        self.base_symbol = ''              # 合约代码
        self.exchange = ''                 # 交易所代码
        self.target_symbol = ''            # 合约在hashaki系统中的唯一代码，通常是 合约代码.交易所代码

        self.orderID = ''                  # 订单编号
        self.HaOrderID = ''                # 订单在hashaki系统中的唯一编号，通常是 Gateway名.订单编号

        # 报单相关
        self.direction = u''               # 报单方向
        self.offset = u''                  # 报单开平仓
        self.price = 0.0                   # 报单价格
        self.totalVolume = 0.0             # 报单总数量
        self.tradedVolume = 0.0            # 报单成交数量
        self.status = u''                  # 报单状态

        self.orderTime = ''                # 发单时间
        self.updateTime = ''               # 最后更新时间
        self.cancelTime = ''               # 撤单时间

class StopOrder(object):
    """本地停止单"""
    def __init__(self):
        """Constructor"""
        self.target_symbol = ''
        self.base_symbol=''
        self.orderType = u''
        self.direction = u''
        self.offset = u''
        self.price = 0.0
        self.volume = 0.0
        
        self.strategy = None       # 下停止单的策略对象
        self.stopOrderID = ''      # 停止单的本地编号 
        self.status = ''           # 停止单状态

class tradeClass:
    def __init__(self):
        # 代码编号相关
        self.base_symbol = ''  # 合约代码
        self.exchange = ''  # 交易所代码
        self.target_symbol = ''  # 合约在hashaki系统中的唯一代码，通常是 合约代码.交易所代码

        self.tradeID = ''  # 成交编号
        self.HaTradeID = ''  # 成交在hasahki系统中的唯一编号，通常是 Gateway名.成交编号

        self.orderID = ''  # 订单编号
        self.HaOrderID = ''  # 订单在hashaki系统中的唯一编号，通常是 Gateway名.订单编号

        # 成交相关
        self.direction = u''  # 成交方向
        self.offset = u''  # 成交开平仓
        self.price = 0.0  # 成交价格
        self.volume = 0.0  # 成交数量
        self.tradeTime = ''  # 成交时间

class tickClass:
    def __init__(self):
        # 代码相关
        self.base_symbol = ''    # 合约代码
        self.exchange = ''  # 交易所代码
        self.target_symbol = ''  # 合约在hashaki系统中的唯一代码，通常是 合约代码.交易所代码

        # 成交数据
        self.lastPrice = 0.0  # 最新成交价
        self.lastVolume = 0.0  # 最新成交量
        self.volume = 0.0  # 今天总成交量
        self.preOpenInterest = 0.0  # 昨持仓量
        self.openInterest = 0.0  # 持仓量
        self.time = ''  # 时间 11:20:56.5
        self.date = ''  # 日期 20151009
        self.tradingDay = ''  # 交易日期

        # 常规行情
        self.openPrice = 0.0  # 今日开盘价
        self.highPrice = 0.0  # 今日最高价
        self.lowPrice = 0.0  # 今日最低价
        self.preClosePrice = 0.0  # 昨收盘价

        self.upperLimit = 0.0  # 涨停价
        self.lowerLimit = 0.0  # 跌停价

        # 五档行情
        self.bidPrice1 = 0.0
        self.bidPrice2 = 0.0
        self.bidPrice3 = 0.0
        self.bidPrice4 = 0.0
        self.bidPrice5 = 0.0

        self.askPrice1 = 0.0
        self.askPrice2 = 0.0
        self.askPrice3 = 0.0
        self.askPrice4 = 0.0
        self.askPrice5 = 0.0

        self.bidVolume1 = 0.0
        self.bidVolume2 = 0.0
        self.bidVolume3 = 0.0
        self.bidVolume4 = 0.0
        self.bidVolume5 = 0.0

        self.askVolume1 = 0.0
        self.askVolume2 = 0.0
        self.askVolume3 = 0.0
        self.askVolume4 = 0.0
        self.askVolume5 = 0.0

class barClass:
    def __init__(self):
        self.target_symbol = ''   # 系统代码
        self.base_symbol = ''     # 代码
        self.exchange = ''        # 交易所

        self.open = 0.0           # OHLC
        self.high = 0.0
        self.low = 0.0
        self.close = 0.0

        self.date = ''            # bar开始的时间，日期
        self.time = ''            # 时间
        self.datetime = None      # python的datetime时间对象

        self.volume = 0.0         # 成交量
        self.openInterest = 0.0   # 持仓量

class OtherIndexClass:
    def __init__(self):
        '''其他周期K线索引'''
        self.counter=0
        self.target_symbol=''
        self.frequence=''         # 周期如：5min

class ResultClass:
    def __init__(self):
        '''交易对结果,从开仓到清仓为一对'''
        self.open_time=''        # 开仓时间
        self.clsoe_time=''       # 平仓时间
        self.open_base=[]        # 开仓价格
        self.close_base=[]       # 平仓价格
        self.open_vol=[]         # 开仓量
        self.close_vol=[]        # 平仓量
        self.slippage=0.0        # 滑点
        self.commis=0.0          # 手续费
        self.pnl=0.0             # 盈利
    
